package com.cunfang.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import com.cunfang.base.service.BaseService;
import com.cunfang.entity.Page;
import com.cunfang.entity.PageData;
import com.cunfang.entity.Tree;
import com.cunfang.entity.UserInfo;
import com.cunfang.util.CONNECTOR;
import com.cunfang.util.ConfigUtil;
import com.cunfang.util.MD5;
import com.cunfang.util.SysUtil;

@Service("com.cunfang.finance.sys.role")
public class RoleService extends BaseService {
	/**
	 * 
	 * @throws Exception 
	 * @功能: 获取角色列表
	 * @作者: rxj
	 * @日期: 2017年7月10日
	 */
	@SuppressWarnings("unchecked")
	public String findRoleList(PageData pd) throws Exception {
		Page page = new Page();
		page.setCurrentPage(Integer.parseInt(pd.getStrings("currpage")));
		page.setShowCount(Integer.parseInt(pd.getStrings("count")));
		page.setPd(pd);
		List<PageData> list = (List<PageData>) this.getDao().findForList(
				"RoleMapper.findRoleList", page);
		return this.outPage(page, list);
	}
	
	/**
	 * 
	 * @throws Exception 
	 * @功能: 获取角色
	 * @作者: rxj
	 * @日期: 2017年7月10日
	 */
	@SuppressWarnings("unchecked")
	public String get(PageData pd) throws Exception {
		if (!pd.containsKey("id")) {
			return this.outError("缺少参数id");
		}
		PageData dictPd = (PageData) this.getDao().findForObject(
				"RoleMapper.get", pd);
		return this.outPageData(dictPd);
	}
	
	/**新增字典
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public String add(PageData pd) throws Exception {
		if (!pd.containsKey("role_name")) {
			return this.outError("缺少参数role_name");
		}
		pd.put("status", "0");
		pd.put("del_flag", "0");
		Integer i = (Integer) this.getDao().save("RoleMapper.addRoleInfo", pd);
		if (i > 0) {
			return this.outString("success");
		}
		return this.outError("error");		
	}
	/**修改字典
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public String update(PageData pd) throws Exception {
		if (!pd.containsKey("role_name")) {
			return this.outError("缺少参数role_name");
		}
		Integer i = (Integer) this.getDao().update("RoleMapper.updateRoleInfo", pd);
		if (i > 0) {
			return this.outString("success");
		}
		return this.outError("error");		
	}
	/**删除角色
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public String deleteRole(PageData pd) throws Exception {	
		if (!pd.containsKey("id")) {
			return this.outError("缺少参数id");
		}
		Integer i = (Integer) this.getDao().delete("RoleMapper.deleteRole", pd);
		if (i > 0) {
			return this.outString("success");
		}
		return this.outError("error");		
	}
	/**角色权限菜单
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public String getRightByRoleId(PageData pd) throws Exception {
		//获取到该用户的现有的权限菜单
		List<PageData> list = (List<PageData>) this.getDao().findForList(
				"RoleMapper.getRightByRoleId", pd);
		//获取所有的菜单列表
		List<PageData> menu = (List<PageData>) this.getDao().findForList("MenuMapper.getAllMenu", pd);
		List<Tree> tree =SysUtil.selectTree(menu, list);
		return this.outObject(tree);
	}
	
	/**
	 * @功能：保存权限记录
	 * @作者：RC
	 * @日期：2016-11-26
	 * */
	public String SaveRoleRightInfo(PageData pd) {
		List<String> listsql = new ArrayList<String>();
		String Role_ID = pd.getString("role_id");
		/* 删除当前角色权限 */
		listsql.add("delete from sys_role_menu where role_id='" + Role_ID
				+ "'");
		String[] fids = pd.getString("fids").split(",");
		String fid;
		String sql;
		/* 新增当前角色权限 */
		for (int i = 0; i < fids.length; i++) {
			fid = fids[i];
			sql = "insert into sys_role_menu (id,role_id,menu_id) values ('"
						+ this.getUUID()
						+ "','"
						+ Role_ID
						+ "','"
						+ fid
						+ "')";
			
			listsql.add(sql);
		}
		this.getDao().ExecuteSql(listsql);
		return this.outString("");

	}
}
